#ifndef TEST_FSMGAME_IMPL_HPP
#define TEST_FSMGAME_IMPL_HPP

////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Window/VideoMode.hpp>

#include <SmegCore/Game/DefaultGameImpl.hpp>

class Test_FSMGameImpl : public smeg::core::DefaultGameImpl
{
    sf::Clock           m_TimerClock;
    bool                m_bPaused;

public:
    ////////////////////////////////////////////////////////////
    /// Constructor/Destructor
    ////////////////////////////////////////////////////////////
                        Test_FSMGameImpl();
    virtual             ~Test_FSMGameImpl();

    DECLARE_CLONE_FUNC( Test_FSMGameImpl, smeg::core::DefaultGameImpl )

    ////////////////////////////////////////////////////////////
    /// Init the game
    ///
    /// \param _pRenderWindow
    ///
    ////////////////////////////////////////////////////////////
    virtual void        Init( sf::RenderWindow* _pRenderWindow );

    ////////////////////////////////////////////////////////////
    /// DeInit the game
    ///
    ////////////////////////////////////////////////////////////
    virtual void        DeInit();

    ////////////////////////////////////////////////////////////
    /// Manage an incoming event
    ////////////////////////////////////////////////////////////
    virtual void        ManageEvent( const sf::Event& _Event );

    ////////////////////////////////////////////////////////////
    /// Call all the Update in the other systems
    ////////////////////////////////////////////////////////////
    virtual void        Update( float _fDeltaTime );

    ////////////////////////////////////////////////////////////
    /// Call all the Render in the other systems
    ////////////////////////////////////////////////////////////
    virtual void        Render();
};


#endif // TEST_FSMGAME_IMPL_HPP
